// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()
const db=cloud.database()
const req = require('request-promise')
const URL = 'https://autumnfish.cn/personalized'
const playlistColection = db.collection('playlist')
// 数据库读取最大条数
const MAX_LIMIT = 10
// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  //取得歌单中数据
  //const list = await playlistColection.get()
  // 解决数据只能读取100条的限制
  //读取总的数据条数
  const countResult = await playlistColection.count()
  const total = countResult.total
  // 要读取得次数
  const batchTime = Math.ceil(total / MAX_LIMIT)
  //分batchTime次读取数据到tasks
  const tasks=[]
  for (let i = 0; i < batchTime; i++) {
    let promise=await playlistColection.skip(i*MAX_LIMIT).limit(MAX_LIMIT).get()
    tasks.push(promise)
  }
  // 将tasks中数据包装成数据库类数据，模拟导入
  let list = {
    data:[]
  }
  if (tasks.length>0) {
    list =  ( await Promise.all(tasks)).reduce((acc, cur) => {
      return {
        data:acc.data.concat(cur.data)
      }
    })
  }

  
  // 从api读取数据
  const playlist = await req(URL).then((res) => {
    return JSON.parse(res).result
  })
  // 比较list与playlist中数据，看添加的数据是否重复
  const newData = []
  for (let i = 0; i < playlist.length; i++) {
    let flag=true
    for (let j = 0; j < list.data.length; j++) {
      if (playlist[i].id===list.data[j].id) {
        flag = false
       break 
      }
      
    }
    if (flag) {
      newData.push(playlist[i])
    }
    
  }
  //将与库中数据没有重复的数据添加近数据库
  for (let i = 0; i < newData.length; i++) {
   await playlistColection.add({
      data: {
        ...newData[i],
        createTime:db.serverDate(),
      }
    }).then((res) => {
      console.log('数据添加成功')
    }).catch((err) => {
      console.error('数据添加失败')
    })
    
  }
  return newData.length
}